<?php

class GuestbookModel extends Zend_Db_Table_Abstract {

    protected $_name = 'page_guestbook'; //Имя таблицы в БД, если нужно

    /**
     * Удаление секции с содержимым
     *
     * @param int $sid #ID секции
     */

    public function deleteSection($sid) {
        $this->delete("sid = " . $sid);
    }

    /**
     * Постраничное возвращение отзывов
     *
     * @param int $pageNumber Номер страницы
     * @param int $sid #ID секции
     * @return mixed
     */
    public function getPaginatorRows($pageNumber = 1, $sid = 0, $all = false) {
        $select = $this->select()->order('time DESC');
        if (!$all)
            $select->where('active > 0');

        if ($sid > 0)
            $select->where('sid = ?', $sid);

        $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbSelect($select));
        $paginator->setCurrentPageNumber($pageNumber);
        $model = new PaginatorModel();
        return $model->get($paginator);
    }

    /**
     * Добавление сообщения
     *
     * @param array $data
     * @return int #ID
     */
    public function newMessage($data) {
        $this->insert($data);
        $id = $this->_db->lastInsertId();
        return $id;
    }

    /**
     * Обновления сообщения
     *
     * @param array $data
     * @param int $id #ID сообщения
     * @return int #ID
     */
    public function updateMessage($data, $id) {
        $this->update($data, 'id = ' . $id);
        return $id;
    }

    /**
     * Удаление сообщения
     *
     * @param int $id #ID сообщения
     * @return int #ID
     */
    public function deleteMessage($id) {
        $this->delete('id = ' . $id);
        return $id;
    }

    /**
     * Получение отзывов
     *
     * @param int $sid #ID секции
     * @return array
     */
    public function getMessages($sid = 0) {
        $select = $this->select()->order('time DESC');
        if ($sid > 0) {
            $select->where('sid = ?', $sid);
        }
        $res = $this->fetchAll($select);
        return $res;
    }

    /**
     * Получение отзыва
     *
     * @param int $mid #ID отзыва
     * @return array
     */
    public function getMessage($mid) {
        $select = $this->select()->where('id = ?', $mid);
        $res = $this->fetchRow($select);
        return $res;
    }

}